Lambda 関数 URL に IAM 認証を使用した場合にリクエストが失敗するので原因と解決策を教えてください
困っていた内容
Lambda 関数を HTTP エンドポイント経由で実行するために Lambda 関数 URL を設定しました。
要件上、実行のためには認証が必要なため、リクエスト元の権限に lambda:InvokeFunctionUrl
を付与して IAM 認証を設定したのですがリクエストが失敗しました。
IAM 認証を使用しない場合にはリクエストが成功することは確認しています。
Lambda 関数 URL に IAM 認証を使用した場合にリクエストが失敗するので原因と解決策を教えてください。
どう対応すればいいの?
AWS Signature Version 4 (SigV4) による署名を実施してください。
関数 URL が認証タイプに AWS_IAM を使用している場合、各 HTTP リクエストには、AWS Signature Version 4 (SigV4) による署名が必要です。awscurl、Postman、および AWS SigV4 Proxy などのツールには、Sigv4 でリクエストに署名するための方法が既に組み込まれています。
IAM 認証を使用しない場合にはリクエストには Sigv4 を使用した署名の必要はありませんが、IAM 認証では明示的に SigV4 での署名が必要です。
署名ツールについてはドキュメントでも紹介されている他、弊社ブログでもサンプルコードがありますのでご参照ください。
- [アップデート]LambdaがHTTPSエンドポイントから実行可能になる、AWS Lambda Function URLsの機能が追加されました! | DevelopersIO
- Lambda から IAM 認証が有効な API Gateway にアクセスしてみた | DevelopersIO